const fs = require('fs')
/** 
 * 数据文件操作模块，只操作数据，不关心业务
*/

/** 
 * 获取列表，回调函数中有两个参数 err 和 data
*/
exports.getMsg = function(callback){
    fs.readFile('./db.json', 'utf8', (err, data) => {
        if (err) return callback(err)
        callback(null, JSON.parse(data).students)
    })
}

/** 
 * 添加信息
*/
exports.addMsg = function(message, callback){
    fs.readFile('./db.json', 'utf8', (err, data) => {
        if (err) return callback(err)
        // 
        let arrMsg = JSON.parse(data)
        arrMsg.students.push(message)
        message.id = new Date().getTime()
        fs.writeFile('./db.json', JSON.stringify(arrMsg), function(err){
            if (err) return callback(err)
            // 
            callback(null)
        })
    })
}

/** 
 * 更新信息
*/
exports.findMsg = function(id, callback){
    fs.readFile('./db.json', 'utf8', (err, data) => {
        if (err) return callback(err)
        let findMsg = JSON.parse(data);
        let findResult = findMsg.students.find(item => {
            return item.id === id
        })
        callback(null, findResult)
    })
}
exports.updateMsg = function(message, callback){
    fs.readFile('./db.json', 'utf8', (err, data) => {
        if (err) return callback(err)
        let upMsg = JSON.parse(data);
        upMsg.students.some((item, i) => {
            if (item.id === parseInt(message.id)){
                item.name = message.name
                item.gender = message.gender
                item.age = message.age
                item.hobby = message.hobby
                return true
            }
        })
        fs.writeFile('./db.json', JSON.stringify(upMsg), function(err){
            if (err) return callback(err)
            callback(null)
        })
    })
}

/** 
 * 删除信息
*/
exports.deleteMsg = function(id, callback){
    fs.readFile('./db.json', 'utf8', (err, data) =>{
        if (err) return callback(err)
        let delMsg = JSON.parse(data);
        delMsg.students.some((item, i) => {
            if (item.id === id) {
                callback(null, i)
                delMsg.students.splice(i, 1)
                return true
            }
        })
        fs.writeFile('./db.json', JSON.stringify(delMsg), function(err){
            if (err) return callback(err)
            callback(null)
        })
    })
}